package com.femass.repository.infra;

import com.femass.model.Tema;
import com.femass.repository.TemaRepository;
import com.femass.util.FacesUtil;
import java.util.List;
import javax.faces.application.FacesMessage;
import org.hibernate.HibernateException;
import org.hibernate.Session;

public class TemaRepositoryHibernate implements TemaRepository {
    
    /**
     *
     * @return
     */
    @Override
    public List<Tema> todos() {
        Session session = (Session) FacesUtil.getRequestAttribute("session");
        return (List<Tema>) session.createCriteria(Tema.class)
                .list();
    }

    @Override
    public Tema porCodigo(Integer codigo) {
        Session session = (Session) FacesUtil.getRequestAttribute("session");
        return (Tema) session.get(Tema.class, codigo);
    }

    @Override
    public void salvar(Tema tema) {
        Session session =  (Session) FacesUtil.getRequestAttribute("session");
      
        try {          
            session.save(tema);
            FacesUtil.adicionarMensagem(FacesMessage.SEVERITY_INFO, "Tema salvo com sucesso!");
        } catch (Exception e) {
            e.printStackTrace();
          FacesUtil.adicionarMensagem(FacesMessage.SEVERITY_FATAL, "Tema não foi salvo!");
        } 
    }

    @Override
    public void remover(Tema tema) {
        Session session = (Session) FacesUtil.getRequestAttribute("session");
      
        try {        
            session.delete(tema);
            FacesUtil.adicionarMensagem(FacesMessage.SEVERITY_INFO, "Tema excluído com sucesso!");
        } catch (HibernateException e) {
            FacesUtil.adicionarMensagem(FacesMessage.SEVERITY_INFO, "Tema não excluído!");
        } 
    }
}
